var prefix = "/product/manager";
$(function () {
    load();
});

function load() {
    $('#exampleTable').bootstrapTable({
        method: 'get',
        // 服务器数据的请求方式 get or post
        url: prefix + "/list",
        // 服务器数据的加载地址
        //	showRefresh : true,
        //	showToggle : true,
        //	showColumns : true,
        iconSize: 'outline',
        toolbar: '#exampleToolbar',
        striped: true,
        // 设置为true会有隔行变色效果
        dataType: "json",
        // 服务器返回的数据类型
        pagination: true,
        // 设置为true会在底部显示分页条
        // queryParamsType : "limit",
        // //设置为limit则会发送符合RESTFull格式的参数
        singleSelect: false,
        // 设置为true将禁止多选
        // contentType : "application/x-www-form-urlencoded",
        // //发送到服务器的数据编码类型
        pageSize: 10,
        // 如果设置了分页，每页数据条数
        pageNumber: 1,
        // 如果设置了分布，首页页码
        //search : true, // 是否显示搜索框
        showColumns: false,
        // 是否显示内容下拉框（选择显示的列）
        sidePagination: "server",
        // 设置在哪里进行分页，可选值为"client" 或者 "server"
        queryParams: function (params) {
            return {
                //说明：传入后台的参数包括offset开始索引，limit步长，sort排序列，order：desc或者,以及所有列的键值对
                limit: params.limit,
                offset: params.offset,
                name: $('#searchName').val(),
                // username:$('#searchName').val()
            };
        },
        // //请求服务器数据时，你可以通过重写参数的方式添加一些额外的参数，例如 toolbar 中的参数 如果
        // queryParamsType = 'limit' ,返回参数必须包含
        // limit, offset, search, sort, order 否则, 需要包含:
        // pageSize, pageNumber, searchText, sortName,
        // sortOrder.
        // 返回false将会终止请求
        columns: [{
            checkbox: true
        },
            {
                field: 'id',
                title: '编号'
            },
            {
                field: 'name',
                title: '商品名称'
            },
            {
                field: 'price',
                title: '价格'
            },
            {
                field: 'stock',
                title: '库存量'
            },
            {
                field: 'categoryName',
                title: '分类'
            },
            {
                field: 'status',
                title: '产品状态',
                formatter: function (value, row, index) {
                    if (value == '0') {
                        return '<span class="label label-danger">待上架</span>';
                    } else if (value == '1') {
                        return '<span class="label label-primary">正常</span>';
                    }
                }
            },
            {
                field: 'createTime',
                title: '创建时间',
                formatter: function (value, row, index) {
                    return formatUnixtimestamp(value);
                }
            },
            {
                field: 'updateTime',
                title: '修改时间',
                formatter: function (value, row, index) {
                    return formatUnixtimestamp(value);
                }
            },
            {
                title: '操作',
                field: 'id',
                align: 'center',
                formatter: function (value, row, index) {
                    var e = '<button class="btn btn-warning btn-xs copy" onclick="edit(' + row.id + ')">编辑</button>&nbsp;&nbsp;';
                    var d = '<button class="btn btn-danger btn-xs copy" onclick="under(' + row.id + ')">下架</button>&nbsp;&nbsp;';
                    var f = '<button class="btn btn-success btn-xs copy" onclick="ground(' + row.id + ')">上架</button>&nbsp;&nbsp;';
                    var k = '<button class="btn btn-primary btn-xs copy" onclick="addStandard(' + row.id + ')">商品规格</button>&nbsp;&nbsp;';
                    var g = '<button class="btn btn-info btn-xs copy" onclick="addAttributes(' + row.id + ')">规格与包装</button>';
                    return e + d + f + k + g;
                }
            }]
    });
}

function reLoad() {
    $('#exampleTable').bootstrapTable('refresh');
}

function addStandard(id) {
    layer.open({
        type: 2,
        title: '增加规格',
        maxmin: true,
        shadeClose: false, // 点击遮罩关闭层
        area: ['800px', '400px'],
        content: '/product/manager/addStandard/' + id // iframe的url
    });
}

function add() {
    var addPage = layer.open({
        type: 2,
        title: '增加',
        maxmin: true,
        shadeClose: false,
        // 点击遮罩关闭层
        area: ['800px', '520px'],
        content: prefix + '/add' // iframe的url
    });
    layer.full(addPage);
}

function edit(id) {
    var editPage = layer.open({
        type: 2,
        title: '编辑',
        maxmin: true,
        shadeClose: false, // 点击遮罩关闭层
        area: ['800px', '520px'],
        content: prefix + '/edit/' + id // iframe的url
    });
    layer.full(editPage);
}

function addAttributes(id) {
    layer.open({
        type: 2,
        title: '添加商品属性',
        maxmin: true,
        shadeClose: false, // 点击遮罩关闭层
        area: ['800px', '520px'],
        content: prefix + '/addAttributes/' + id // iframe的url
    });
}

function under(id) {
    layer.confirm('确定要下架该商品？', {
            btn: ['确定', '取消']
        },
        function () {
            $.ajax({
                url: prefix + "/under",
                type: "post",
                data: {
                    'id': id
                },
                success: function (r) {
                    if (r.code == 0) {
                        layer.msg(r.msg);
                        reLoad();
                    } else {
                        layer.msg(r.msg);
                    }
                }
            });
        })
}

function ground(id) {
    $.getJSON('/productProperty/getProperty/' + id, function (data) {
        if (data.length == 0) {
            layer.msg("请先设置商品属性");
            return;
        } else {
            $.getJSON('/standard/get_standards/' + id, function (standards) {
                console.log(checkStandardsPriceStock(standards));
                if (checkStandards(standards)) {
                    layer.msg('您设置了商品规格，请输入价格和库存', {
                        time: 5000
                    }, function(){
                    });
                    return;
                } else if (checkStandardsPriceStock(standards)) {
                    layer.msg('您设置了商品规格，但是商品价格和库存存在冲突，请修改', {
                        time: 5000
                    }, function(){
                    });
                    return;
                }
            });
            layer.confirm('确定要上架该商品？', {
                btn: ['确定', '取消']
            }, function () {
                $.ajax({
                    url: prefix + "/ground",
                    type: "post",
                    data: {
                        'id': id
                    },
                    success: function (r) {
                        if (r.code == 0) {
                            layer.msg(r.msg);
                            reLoad();
                        } else {
                            layer.msg(r.msg);
                        }
                    }
                });
            }, function () {

            });
        }
    });
}

/**
 * 输入了商品规格，并且没有输入价格
 */
function checkStandards(data) {
    var flag = false;
    for (var i = 0; i < data.length - 1; i++) {
        for (var j = data.length - 1; j > i; j--) {
            if (data[i].standardId != data[j].standardId) {
                if ((data[i].price == null && data[i].stock == null) && (data[j].price == null && data[j].stock == null)) {
                    flag = true;
                }
            }
        }
    }
    return flag;
}

function checkStandardsPriceStock(data) {
    var flag = false;
    for (var i = 0; i < data.length - 1; i++) {
        for (var j = data.length - 1; j > i; j--) {
            if (data[i].standardId != data[j].standardId) {
                if ((data[i].price != null && data[i].stock != null) && (data[j].price != null && data[j].stock != null)) {
                    flag = true;
                }
            }
        }
    }
    return flag;
}

function batchRemove() {
    var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行，当没有选择的记录时，返回一个空数组
    if (rows.length == 0) {
        layer.msg("请选择要删除的数据");
        return;
    }
    layer.confirm("确认要删除选中的'" + rows.length + "'条数据吗?", {
            btn: ['确定', '取消']
            // 按钮
        },
        function () {
            var ids = new Array();
            // 遍历所有选择的行数据，取每条数据对应的ID
            $.each(rows,
                function (i, row) {
                    ids[i] = row['id'];
                });
            $.ajax({
                type: 'POST',
                data: {
                    "ids": ids
                },
                url: prefix + '/batchRemove',
                success: function (r) {
                    if (r.code == 0) {
                        layer.msg(r.msg);
                        reLoad();
                    } else {
                        layer.msg(r.msg);
                    }
                }
            });
        },
        function () {

        });
}

function formatUnixtimestamp(unixtimestamp) {
    var unixtimestamp = new Date(unixtimestamp * 1000);
    var year = 1900 + unixtimestamp.getYear();
    var month = "0" + (unixtimestamp.getMonth() + 1);
    var date = "0" + unixtimestamp.getDate();
    var hour = "0" + unixtimestamp.getHours();
    var minute = "0" + unixtimestamp.getMinutes();
    var second = "0" + unixtimestamp.getSeconds();
    return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length)
        + " " + hour.substring(hour.length - 2, hour.length) + ":"
        + minute.substring(minute.length - 2, minute.length) + ":"
        + second.substring(second.length - 2, second.length);
}